From d7c640713231a6673da0800ffb125ae566996864 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Mon, 29 Mar 1993 04:58:31 +0000 Subject: [PATCH] *** empty log message *** --- lisp/simple.el | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/lisp/simple.el b/lisp/simple.el index 6d27c2122ef..a07ce68a9fe 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -1675,6 +1675,34 @@ With argument, do this that many times." With argument, do this that many times." (interactive "p") (kill-word (- arg))) + +(defun current-word () + "Return the word point is on as a string, if it's between two +word-constituent characters. If not, but it immediately follows one, +move back first. Otherwise, if point precedes a word constituent, +move forward first. Otherwise, move backwards until a word constituent +is found and get that word; if you reach a newline first, move forward +instead." + (interactive) + (save-excursion + (let ((oldpoint (point)) (start (point)) (end (point))) + (skip-syntax-backward "w_") (setq start (point)) + (goto-char oldpoint) + (skip-syntax-forward "w_") (setq end (point)) + (if (and (eq start oldpoint) (eq end oldpoint)) + (progn + (skip-syntax-backward "^w_" + (save-excursion (beginning-of-line) (point))) + (if (eq (preceding-char) ?\n) + (progn + (skip-syntax-forward "^w_") + (setq start (point)) + (skip-syntax-forward "w_") + (setq end (point))) + (setq end (point)) + (skip-syntax-backward "w_") + (setq start (point))))) + (buffer-substring start end)))) (defconst fill-prefix nil "*String for filling to insert at front of new line, or nil for none. -- 2.30.2